1. Field of the Invention
The present invention relates to the field of graphical user interfaces (GUIs), and more particularly to a system and method for managing a scalable list of items for display in a display device of a small footprint device.
2. Description of the Related Art
Graphical user interfaces (GUIs) enable users to interact with software applications in an intuitive manner, utilizing graphical components or controls, such as buttons, input text fields, menus, etc. Although graphical user interfaces are often associated with software applications that run on general computing devices, such as desktop computers, GUIs are becoming more common in other types of computing devices, such as small footprint devices.
The field of “smart” small footprint devices is growing and changing rapidly. Small footprint devices include handheld computers, personal data assistants (PDAs), cellular phones, global positioning system (GPS) receivers, game consoles, set top boxes, and many more such devices. Small footprint devices are becoming increasingly powerful and enabled to run software applications or services historically associated with general computing devices, such as desktop computers. For example, many small footprint devices are now able to run web browser applications.
As small footprint devices have become more powerful and the software applications running on small footprint devices have become more complex, it has become increasingly feasible and desirable to enable users to easily interact with the applications through graphical user interfaces. However, experience has shown that many techniques commonly used when implementing a GUI intended to run in a resource-rich environment such as a desktop computer have various drawbacks if applied to a GUI intended to run in a small footprint device. Small footprint devices may have very strong resource constraints, such as the amount of memory and the processing power available. Thus, it is often necessary or desirable to design specialized or optimized user interface components that perform well in the environment of a small footprint device.
One type of user interface component or control often supported by graphical user interface systems is a list component or control for displaying a list of items. In various systems or applications, items in a list component may represent any of various types of entities and may be displayed in various ways, e.g., through the use of text strings, icons, background shading, etc., or through various combinations of these. For example, an email client program may use a list component to display a list of e-mail messages, where each item or row in the list represents a particular e-mail message and may be displayed with various icons to indicate the status of the message, such as whether it has already been read, etc.
Such GUI list components are familiar to users of desktop computers. As described above, it may also be desirable to use such a rich GUI list component within the environment of a small footprint device. However, previous approaches to implementing GUI list components often suffer from various drawbacks when the list components are used within a small footprint device environment.
One potential drawback of many previous approaches to implementing GUI list components is that the list components may allocate memory for maintaining information associated with each list item. For example, as each data item is inserted into a list, a list component may create and maintain various user interface structures or other data structures associated with the data item. The use of the information maintained by the list component for each list item may have various benefits, such as making it possible to display the list items faster as a user traverses through the list. However, in a memory-constrained environment, the disadvantage of the extra memory required for each list item may outweigh any potential benefits. Thus, it may be desirable to provide a system and method for displaying list items in a scalable manner, such that, as many items are added to the list, the memory requirements of the list component itself remain constant.
Another potential drawback of some previous approaches to implementing GUI list components is that the list components often provide no control or only limited control over the display or appearance of each list item. For example, a programmer may be limited to setting certain application programming interface (API) attributes controlling the appearance of each list item, while it may be desirable to customize various other aspects of list item display that are unsupported by the API. Also, a list component may be limited in the types of data items or objects it is able to display. It may thus be desirable to provide a system and method for displaying list items such that the rendering or display of each list item may be easily controlled by a client programmer, e.g., to control the way in which a programmer-defined object is displayed to the user.